#!/usr/bin/env python
# -*- coding:utf-8 -*-
#分开读写加队列，把用户输入的返回回去；

import socket
import select
import time
import Queue

ip_port=('127.0.0.1',8888)
sk = socket.socket()
sk.bind(ip_port)
sk.listen(5)    #5，表示内核已经接到了连接请求，但服务器还没有调用accept进行处理的连接个数最大为5
sk.setblocking(False)

inputs=[sk]
outputs=[]
message={}
#message = {
#    'c1':队列，[a,aa,aaa]
#    'c2':队列，【b,bb,bbb】
#}
while True:
    rlist,wlist,e=select.select(inputs,outputs,[],0.05)
    # time.sleep(2)
    for r in rlist:
        if r==sk:   #客户端句柄
            conn,address=r.accept()
            inputs.append(conn)
            print address
        else:
            message[r]=Queue.Queue()
            client_data=r.recv(1024)
            if client_data:
                outputs.append(r)
                #在指定队列中插入数据
                message[r].put(client_data)
            else:
                inputs.remove(r)
    for w in wlist:
        #去指定队列取数据
        try:
            data=message[w].get_nowait()
            w.sendall(data)
        except Queue.Empty:
            pass
        outputs.remove(w)
        del message[w]


